[Interactive Graph] Add WB Announcer to Tangent Graph#3734
Merged
Conversation
Contributor
npm Snapshot: PublishedGood news!! We've packaged up the latest commit from this PR (574fe0a) and published it to npm. You Example: pnpm add @khanacademy/perseus@PR3734If you are working in Khan Academy's frontend, you can run the below command. ./dev/tools/bump_perseus_version.ts -t PR3734If you are working in Khan Academy's webapp, you can run the below command. ./dev/tools/bump_perseus_version.js -t PR3734 |
Contributor
|
Size Change: +46 B (+0.01%) Total Size: 508 kB 📦 View Changed
ℹ️ View Unchanged
|
ivyolamit
approved these changes
Jun 5, 2026
…/wb-announcer-tangent
Merged
Evelas78
added a commit
that referenced
this pull request
Jun 8, 2026
This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated. # Releases ## @khanacademy/perseus@77.11.0 ### Minor Changes - [#3742](#3742) [`d15912407c`](d159124) Thanks [@nishasy](https://github.com/nishasy)! - [Image] Remove gif flag, make gif controls permanent - [#3725](#3725) [`9c601da23f`](9c601da) Thanks [@EmiliaPalaghita](https://github.com/EmiliaPalaghita)! - Add new JSON field "showPointLabels" for interactive graphs. When set, every movable point gets a visible on-canvas label driven by the matching `pointLabels[i]` entry. `pointLabels` is required whenever `showPointLabels` is true (enforced by the interactive-graph-widget-error lint rule). ### Patch Changes - [#3678](#3678) [`5d4625eb73`](5d4625e) Thanks [@catandthemachines](https://github.com/catandthemachines)! - [Interactive Graph] Add WB Announcer to Quadratic Graph - [#3718](#3718) [`7ba77bb3e5`](7ba77bb) Thanks [@ivyolamit](https://github.com/ivyolamit)! - [Interactive Graph] Refactor movable-line - [#3732](#3732) [`40491377ee`](4049137) Thanks [@Evelas78](https://github.com/Evelas78)! - Added role="figure" to the mafs-graph - [#3729](#3729) [`fcd76e42c0`](fcd76e4) Thanks [@ivyolamit](https://github.com/ivyolamit)! - Add test to catch typo in translation e.g. %(word) -> \\$(word)s - [#3701](#3701) [`7ccf7fbc8f`](7ccf7fb) Thanks [@Myranae](https://github.com/Myranae)! - Migrate sortable fonts and colors to semantic tokens and add regression stories - [#3703](#3703) [`5d00f57022`](5d00f57) Thanks [@Myranae](https://github.com/Myranae)! - Convert expression widget related files to use semantic tokens - [#3733](#3733) [`6f711cfcf9`](6f711cf) Thanks [@catandthemachines](https://github.com/catandthemachines)! - [Interactive Graph] Use WB Announcer in Absolute Value graph. - [#3736](#3736) [`1cd01a4550`](1cd01a4) Thanks [@catandthemachines](https://github.com/catandthemachines)! - [Interactive Graph] Use WB Announcer in Exponential graph. - [#3735](#3735) [`dcc83bdbf8`](dcc83bd) Thanks [@catandthemachines](https://github.com/catandthemachines)! - [Interactive Graph] Use WB Announcer in Logarithm graph. - [#3734](#3734) [`b4d94b3c09`](b4d94b3) Thanks [@catandthemachines](https://github.com/catandthemachines)! - [Interactive Graph] Use WB Announcer in Tangent graph. - Updated dependencies \[[`d15912407c`](d159124), [`9c601da23f`](9c601da), [`ec0ce8d61a`](ec0ce8d), [`5d00f57022`](5d00f57)]: - @khanacademy/perseus-core@27.4.0 - @khanacademy/perseus-linter@5.1.0 - @khanacademy/math-input@26.4.33 - @khanacademy/keypad-context@3.2.61 - @khanacademy/kmath@2.4.19 - @khanacademy/perseus-score@8.11.3 ## @khanacademy/perseus-core@27.4.0 ### Minor Changes - [#3725](#3725) [`9c601da23f`](9c601da) Thanks [@EmiliaPalaghita](https://github.com/EmiliaPalaghita)! - Add new JSON field "showPointLabels" for interactive graphs. When set, every movable point gets a visible on-canvas label driven by the matching `pointLabels[i]` entry. `pointLabels` is required whenever `showPointLabels` is true (enforced by the interactive-graph-widget-error lint rule). ### Patch Changes - [#3742](#3742) [`d15912407c`](d159124) Thanks [@nishasy](https://github.com/nishasy)! - [Image] Remove gif flag, make gif controls permanent - [#3726](#3726) [`ec0ce8d61a`](ec0ce8d) Thanks [@handeyeco](https://github.com/handeyeco)! - Copy data that was once shared into perseus-parser ## @khanacademy/perseus-linter@5.1.0 ### Minor Changes - [#3725](#3725) [`9c601da23f`](9c601da) Thanks [@EmiliaPalaghita](https://github.com/EmiliaPalaghita)! - Add new JSON field "showPointLabels" for interactive graphs. When set, every movable point gets a visible on-canvas label driven by the matching `pointLabels[i]` entry. `pointLabels` is required whenever `showPointLabels` is true (enforced by the interactive-graph-widget-error lint rule). ### Patch Changes - Updated dependencies \[[`d15912407c`](d159124), [`9c601da23f`](9c601da), [`ec0ce8d61a`](ec0ce8d)]: - @khanacademy/perseus-core@27.4.0 - @khanacademy/kmath@2.4.19 ## @khanacademy/keypad-context@3.2.61 ### Patch Changes - Updated dependencies \[[`d15912407c`](d159124), [`9c601da23f`](9c601da), [`ec0ce8d61a`](ec0ce8d)]: - @khanacademy/perseus-core@27.4.0 ## @khanacademy/kmath@2.4.19 ### Patch Changes - Updated dependencies \[[`d15912407c`](d159124), [`9c601da23f`](9c601da), [`ec0ce8d61a`](ec0ce8d)]: - @khanacademy/perseus-core@27.4.0 ## @khanacademy/math-input@26.4.33 ### Patch Changes - [#3703](#3703) [`5d00f57022`](5d00f57) Thanks [@Myranae](https://github.com/Myranae)! - Convert expression widget related files to use semantic tokens - Updated dependencies \[[`d15912407c`](d159124), [`9c601da23f`](9c601da), [`ec0ce8d61a`](ec0ce8d)]: - @khanacademy/perseus-core@27.4.0 - @khanacademy/keypad-context@3.2.61 ## @khanacademy/perseus-editor@32.3.2 ### Patch Changes - [#3722](#3722) [`e751a37c67`](e751a37) Thanks [@jeremywiebe](https://github.com/jeremywiebe)! - BUGFIX: Fix cursor positioning after pasting widget content, or after inserting a widget via the "Add a widget…" dropdown, in the markdown editor (was jumping to the end of the content always). - [#3742](#3742) [`d15912407c`](d159124) Thanks [@nishasy](https://github.com/nishasy)! - [Image] Remove gif flag, make gif controls permanent - Updated dependencies \[[`5d4625eb73`](5d4625e), [`7ba77bb3e5`](7ba77bb), [`d15912407c`](d159124), [`40491377ee`](4049137), [`fcd76e42c0`](fcd76e4), [`9c601da23f`](9c601da), [`ec0ce8d61a`](ec0ce8d), [`7ccf7fbc8f`](7ccf7fb), [`5d00f57022`](5d00f57), [`6f711cfcf9`](6f711cf), [`1cd01a4550`](1cd01a4), [`dcc83bdbf8`](dcc83bd), [`b4d94b3c09`](b4d94b3)]: - @khanacademy/perseus@77.11.0 - @khanacademy/perseus-core@27.4.0 - @khanacademy/perseus-linter@5.1.0 - @khanacademy/math-input@26.4.33 - @khanacademy/keypad-context@3.2.61 - @khanacademy/kmath@2.4.19 - @khanacademy/perseus-score@8.11.3 ## @khanacademy/perseus-score@8.11.3 ### Patch Changes - Updated dependencies \[[`d15912407c`](d159124), [`9c601da23f`](9c601da), [`ec0ce8d61a`](ec0ce8d)]: - @khanacademy/perseus-core@27.4.0 - @khanacademy/kmath@2.4.19
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
movePointindex 0) and second/control point (movePointindex 1) keyboard moves into the WB Announcer — the reducer'scase "tangent"now emits amove-tangent-pointstateAnnouncement, andtangent.tsxpassesariaLive="off"toMovablePointso moves aren't double-announced.getAnnouncementTexthandlesmove-tangent-pointvia a newsrTangentPointLabelhelper: index 0 reads as the inflection point ("Inflection point at X comma Y.") and index 1 as the control point ("Control point at X comma Y."), matching the static aria-labels. An author-supplied custom label ("Point A at X comma Y.") overrides the inflection/control-point phrasing when one is set — mirroring sinusoid'spointLabelshandling.stateAnnouncement.aria-livefromuseControlPointonce every graph is wired to the announcer.Issue: LEMS-4196
Test plan
Automated
pnpm tsc— passespnpm lint(changed files) — passespnpm jest packages/perseus/src/widgets/interactive-graphs— passes (reducer, screenreader-text, and tangent suites)Manual (reviewer)